import Vue from 'vue'

// 将所有浏览器默认样式进行统一处理
import 'normalize.css/normalize.css' // A modern alternative to CSS resets

import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
// 导入语言包
// import locale from 'element-ui/lib/locale/lang/en' // lang i18n

// 导入全局样式
import '@/styles/index.scss' // global css

import App from './App'
import store from './store'
import router from './router'

import '@/icons' // icon
import '@/permission' // permission control

// 导入插件
import plugin from '@/utils/plugin'
// 使用插件
Vue.use(plugin)

// 导入并注册全局插件(打印)
import Print from 'vue-print-nb'
Vue.use(Print);

// 导入全局过滤器
import * as allFilters from '@/filter/index'
// 注册全局过滤器
Object.keys(allFilters).forEach(item => {
  Vue.filter(item, allFilters[item])
})

// 定义一个全局自定义指令: 用来给加载失败图片设置为默认图片
// 'imgerror' :  为自定义指令的名称
/* Vue.directive('imgerror', {
  // dom: 使用自定义指令的 dom 元素
  // options: 指令中的 dom 元素的属性 
  // 指令对象 会在当前的dom元素插入到节点之后执行
  inserted: function(dom, options){
    // 图片的 onerror 事件(加载失败触发的事件)
    dom.onerror = () => {
      // 将图片地址设置为默认图片
      dom.src = options.value
    }
  }
}) */
// 导入自定义指令(全局)
/* import * as allDir from '@/directives/index'
console.log(allDir);
// Object.keys() : 可以得到对象的所有 key
Object.keys(allDir).forEach(item => {
  console.log(item);
  console.log(allDir[item]);
  // Vue.directive('指令名', '指令对象')
  Vue.directive(item, allDir[item])
}) */
import { imgerror } from '@/directives/index'
// console.log(imgerror);
Vue.directive('imgerror', imgerror)

// 环境变量如果是开发环境，则导入假数据（mock中） 用不到可直接删除
/* if (process.env.NODE_ENV === 'production') {
  const { mockXHR } = require('../mock')
  mockXHR()
} */

// set ElementUI lang to EN
// Vue.use(ElementUI, { locale })
// 如果想要中文版 element-ui，按如下方式声明
Vue.use(ElementUI)

Vue.config.productionTip = false

new Vue({
  el: '#app',
  router,
  store,
  render: h => h(App)
})
